﻿using System;
using System.Collections.Generic;
using com.igetui.api.openservice;
using com.igetui.api.openservice.igetui;
using com.igetui.api.openservice.igetui.template;
using com.igetui.api.openservice.payload;

/**
 * 
 * 说明：
 *      此工程是一个测试工程，所用的相关.dll文件，都已经存在protobuffer文件里，需要加载到References里。
 *      工程中还有用到一个System.Web.Extensions文件，这个文件是用到Framework里V4.0版本的，
 *      一般路径如下：C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0，
 *      或如下路径：C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5没有的也可以在protobuffer
 *      文件夹里找到。如再有问题，请直接联系技术客服，谢谢！
 *      GetuiServerApiSDK：此.dll文件为个推C#版本的SDK文件
 *      Google.ProtocolBuffers：此.dll文件为Google的数据交换格式文件
 *  注：
 *      新增一个连接超时时间设置，通过在环境变量--用户变量中增加名为：GETUI_TIMEOUT 的变量（修改环境变量，
       电脑重启后才能生效），值则是超时时间，如不设定，则默认为20秒。

    注意：该解决方案中有多个项目，默认启动项目为QuickIn，若要启动其他项目，请选择上方的启动左侧的下拉框，选中启动项目，再启动
 **/

namespace GetuiServerApiSDKDemo
{
    public static class demo
    {
        //参数设置 <-----参数需要重新设置----->
        //http的域名
        private static String HOST = "http://sdk.open.api.igexin.com/apiex.htm";


        //https的域名
        //private static String HOST = "https://api.getui.com/apiex.htm";

        //定义常量, appId、appKey、masterSecret 采用本文档 "第二步 获取访问凭证 "中获得的应用配置
        private static String APPID = "afOqg5sPmv8F0qwickA1Q7";
        private static String APPKEY = "0CMWwsJrli61TcaBzdrBO";
        private static String MASTERSECRET = "E44CKypTfd7pRyM2tARRp9";

        //PushMessageToList接口测试代码
        public static void PushMessageToList(string title, string content, string clientIDs)
        {
            // 推送主类（方式1，不可与方式2共存）
            IGtPush push = new IGtPush(HOST, APPKEY, MASTERSECRET);
            // 推送主类（方式2，不可与方式1共存）此方式可通过获取服务端地址列表判断最快域名后进行消息推送，每10分钟检查一次最快域名
            //IGtPush push = new IGtPush("",APPKEY,MASTERSECRET);
            ListMessage message = new ListMessage();

            //NotificationTemplate template = NotificationTemplateDemo(title, content);

            TransmissionTemplate template = TransmissionTemplateDemo(title, content);

            // 用户当前不在线时，是否离线存储,可选
            message.IsOffline = true;
            // 离线有效时间，单位为毫秒，可选
            message.OfflineExpireTime = 1000 * 3600 * 12;
            message.Data = template;
            //message.PushNetWorkType = 0;        //判断是否客户端是否wifi环境下推送，1为在WIFI环境下，0为不限制网络环境。

            //设置接收者
            List<Target> targetList = new List<Target>();

            string[] array = clientIDs.TrimEnd(',').Split(',');

            for (int i = 0; i < array.Length; i++)
            {
                Target target = new Target();
                target.appId = APPID;
                target.clientId = array[i];
                targetList.Add(target);
            }

            // 如需要，可以设置多个接收者
            //com.igetui.api.openservice.igetui.Target target2 = new com.igetui.api.openservice.igetui.Target();
            //target2.AppId = APPID;
            //target2.ClientId = "ddf730f6cabfa02ebabf06e0c7fc8da0";


            //targetList.Add(target2);

            String contentId = push.getContentId(message);
            String pushResult = push.pushMessageToList(contentId, targetList);
            System.Console.WriteLine("-----------------------------------------------");
            System.Console.WriteLine("服务端返回结果:" + pushResult);
        }

        public static TransmissionTemplate TransmissionTemplateDemo(string title, string content)
        {
            TransmissionTemplate template = new TransmissionTemplate();
            template.AppId = APPID;
            template.AppKey = APPKEY;
            template.TransmissionType = "1";            //应用启动类型，1：强制应用启动 2：等待应用启动
            template.TransmissionContent = content;  //透传内容

            //iOS简单推送
            APNPayload apnpayload = new APNPayload();
            SimpleAlertMsg alertMsg = new SimpleAlertMsg("alertMsg");
            apnpayload.AlertMsg = alertMsg;//通知消息体
            apnpayload.Badge = 11;//应用icon上显示的数字
            apnpayload.ContentAvailable = 1;
            apnpayload.Category = "";
            apnpayload.Sound = "";//通知铃声文件名
            apnpayload.addCustomMsg("MsgContent", content);//增加自定义的数据
            template.setAPNInfo(apnpayload);

            //APN高级推送
            //APNPayload apnpayload = new APNPayload();
            //DictionaryAlertMsg alertMsg = new DictionaryAlertMsg();
            //alertMsg.Body = "Body";
            //alertMsg.ActionLocKey = "ActionLocKey";
            //alertMsg.LocKey = "LocKey";
            //alertMsg.addLocArg("LocArg");
            //alertMsg.LaunchImage = "LaunchImage";
            ////iOS8.2支持字段
            //alertMsg.Title = "Title";
            //alertMsg.TitleLocKey = "TitleLocKey";
            //alertMsg.addTitleLocArg("TitleLocArg");

            //apnpayload.AlertMsg = alertMsg;
            //apnpayload.Badge = 10;
            //apnpayload.ContentAvailable = 1;
            ////apnpayload.Category = "";
            //apnpayload.Sound = "test1.wav";
            //apnpayload.addCustomMsg("payload", "payload");
            ////多媒体
            //MultiMedia multiMedia = new MultiMedia();
            //multiMedia.rid = "xxx-1";
            //multiMedia.url = "";
            //multiMedia.setIsOnlyWifi(false);
            //multiMedia.type = MultiMedia.MediaType.pic;

            //List<MultiMedia> list = new List<MultiMedia>();
            //list.Add(multiMedias);
            //apnpayload.MultiMedias = list;
            //template.setAPNInfo(apnpayload);


            //设置客户端展示时间
            //String begin = "2015-03-06 14:28:10";
            //String end = "2015-03-06 14:38:20";
            //template.setDuration(begin, end);

            return template;
        }

        //通知透传模板动作内容
        public static NotificationTemplate NotificationTemplateDemo(string title, string content)
        {
            NotificationTemplate template = new NotificationTemplate();
            template.AppId = APPID;
            template.AppKey = APPKEY;
            //通知栏标题
            template.Title = title;
            //通知栏内容     
            template.Text = content;
            //通知栏显示本地图片E:\项目\JuXian\LeadThingAbpZeroTemplate\LeadThing.AbpZeroTemplate.Web\libs\app\ic_launcher.png
            //string imagePath = HttpContext.Current.Server.MapPath("/libs/app/ic_launcher.png");
            string imagePath = "http://61.162.225.227:887/libs/app/ic_launcher.png";
            template.Logo = imagePath;
            //通知栏显示网络图标
            template.LogoURL = imagePath;
            //应用启动类型，1：强制应用启动  2：等待应用启动
            template.TransmissionType = "1";
            //透传内容  
            template.TransmissionContent = content;
            //接收到消息是否响铃，true：响铃 false：不响铃   
            template.IsRing = true;
            //接收到消息是否震动，true：震动 false：不震动   
            template.IsVibrate = true;
            //接收到消息是否可清除，true：可清除 false：不可清除    
            template.IsClearable = true;
            //设置通知定时展示时间，结束时间与开始时间相差需大于6分钟，消息推送后，客户端将在指定时间差内展示消息（误差6分钟）
            //String begin = "2015-03-06 14:36:10";
            //String end = "2015-03-06 14:46:20";
            //template.setDuration(begin, end);

            //iOS简单推送
            APNPayload apnpayload = new APNPayload();
            SimpleAlertMsg alertMsg = new SimpleAlertMsg("alertMsg");
            apnpayload.AlertMsg = alertMsg;//通知消息体
            apnpayload.Badge = 11;//应用icon上显示的数字
            apnpayload.ContentAvailable = 1;
            apnpayload.Category = "";
            apnpayload.Sound = "";//通知铃声文件名
            apnpayload.addCustomMsg("MsgContent", "IOS测试内容");//增加自定义的数据
            template.setAPNInfo(apnpayload);


            return template;
        }




    }
}
